#请把该脚本放在项目根目录下!!!
username='zjarlin'
repoName='RepoBak'          #定义目标仓库名称(与你创建的仓库名称相同)
gitRepoName='GitRepository' #定义本地git仓库根目录名字                                                                                  #我的git用户名
branchType='master'         #提交到的分支(默认master)
mailType='outlook.com'      #用户邮件类型与git登录地址相关,就是你注册的邮箱@后边的

#虽然默认是脚本所在目录,不过你忘了拷贝脚本 ,在这里可以覆盖srcDir你的项目目录,如果你没有将脚本放入项目根目录的话-->取消下方注释,填入相应的项目全路径👇🏻
#srcDir="这里填入全路径"
##########################拷贝代码到目标仓库##################################
#操作只用改这两行
function main() {
  cpSrc2LocalRepo #备份代码到本地仓库备份目录以防git抽风
  #    push2RemoteRepo #提交到我的远程仓库     #废弃,以后使用lazygit!!!!!!!!!!!!!
}
#-------------------------以下无需修改-----------------------

needClean='public .deploy_git .git .github .gitignore .idea node_modules bak_config.butterfly.yml xiaokang.css.bak bak_config.yml' #默认删除
tmpName='.tmp'                                                                                                                     #定义本地git仓库临时目录名字.tmp
#当前脚本所在工作目录，如果是软连接，返回的是软连接所在目录，而不是’本体‘的路径
workdir=$(
  # shellcheck disable=SC2046
  cd $(dirname "$0") || exit
  pwd
)
srcDir="$workdir" # 默认使用 脚本当前工作目录作为src源码目录
# shellcheck disable=SC2034
#原变量
#==========冷修改内容(不经常修改)=============
gitDir="$HOME/$gitRepoName" #定义本地git仓库路径(默认家目录)
#branchType='src-zip'
##########################推导变量(不必更改的内容)##################################
giteeRepoUrl="https://gitee.com/$username/$repoName.git" #我的gitee远程仓库地址
# shellcheck disable=SC2034
githubRepoUrl="https://github.com/$username/$repoName.git" #我的github远程仓库地址
#默认使用gitee
gitRepoUrl=$giteeRepoUrl
baseName=$(basename "$srcDir") #应为myBlog #项目所在文件夹名字
zipName="$baseName.zip"        #定义代码压缩成的文件名

function cpSrc2LocalRepo() {
  #强制创建仓库(假设你有会合并,并不会丢失文件)
  mkdir -p "$gitDir"
  #在仓库根目录强制创建临时目录
  mkdir -p "$gitDir"/$tmpName
  #在仓库根目录强制创建目标仓库
  mkdir -p "$gitDir"/$repoName
  #确保进入了当前项目所在目录
  cd "$srcDir" || exit

  #复制到本地仓库临时目录
  cp -r ./ "$gitDir"/$tmpName
  #进入该目录
  cd "$gitDir"/$tmpName || exit

  # 清楚不必要的包
  rm -rf $needClean
  echo "压缩成zip不?"
  echo "1 ->> (推荐) 我想压缩成zip备份"
  echo "2 ->> (不推荐) 我想保持原有代码备份"
  # shellcheck disable=SC2162
  read number
  case $number in
  1)
    #  -q 表示不显示压缩进度状态
    #  -r 表示子目录子文件全部压缩为zip  //这部比较重要，不然的话只有something这个文件夹被压缩，里面的没有被压缩进去
    #  -e表示你的压缩文件需要加密，终端会提示你输入密码的
    #  -m表示压缩完删除原文件
    #  -o表示设置所有被压缩文件的最后修改时间为当前压缩时间
    zip -rqm9 "$gitDir"/$repoName/"$zipName" ./ #删除源文件
    #    zip -rq9 "$gitDir"/$repoName/"$zipName" ./         #保留源文件
    #    zip -rm9 "$gitDir"/$repoName/"$zipName" ./
    ;;
  2)
    #    rm -rf $gitDir/$repoName/*
    mv -f "$gitDir"/$tmpName/ "$gitDir"/$repoName/$(basename $srcDir)
    ;;
  esac
  rm -rf $gitDir/$tmpName
}
#########################提交到我的远程仓库#####################

function push2RemoteRepo() {
  #进入目标仓库(对应远程仓库)
  cd "$gitDir"/$repoName || exit
  cd "$gitDir"/$tmpName || exit
  git init
  #  git config --global user.name "zjarlin"
  #  git config --global user.email "zjarlin@outlook.com"
  git config --global user.name "$username"
  git config --global user.email "$username@$mailType"

  touch README.md
  # 替换标题
  tee >README.md <<'EOF'
  # 输入md说明
EOF
  # 追加修改时间
  # shellcheck disable=SC2046
  echo "修改于"$(date "+%Y-%m-%d %H:%M:%S") >>./README.md

  git add .
  git commit -m "本次修改提交日期为 $(date)"
  git remote add origin $gitRepoUrl
  git pull origin +$branchType
  git push origin +$branchType
}

main
